﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;

namespace TesteSorteio
{
    public class TiroPersonagem
    {
        Texture2D mTiroPersonagemCima;
        Texture2D mTiroPersonagemBaixo;
        Texture2D mTiroPersonagemEsquerda;
        Texture2D mTiroPersonagemDireita;
        
        List<Texture2D> ArTiroPersonagem;
        List<Rectangle> PosTiroPersonagem;
        List<Rectangle> PosTiroPersonagemBaixo;
        List<Rectangle> PosTiroPersonagemDireita;
        List<Rectangle> PosTiroPersonagemEsquerda;
        int Direction;

        public Texture2D RetornaTextura()
        {
            if (Direction == 0)
            {
                return mTiroPersonagemCima;
            }
            if (Direction == 1)
            {
                return mTiroPersonagemBaixo;
            }
            if (Direction == 2)
            {
                return mTiroPersonagemEsquerda;
            }
            else
            {
                return mTiroPersonagemDireita;
            }
        }

        public TiroPersonagem(ContentManager Content)
        {
            mTiroPersonagemCima = Content.Load<Texture2D>("shoot");
            ArTiroPersonagem = new List<Texture2D>();
            mTiroPersonagemBaixo = Content.Load<Texture2D>("shootBaixo");
            mTiroPersonagemEsquerda = Content.Load<Texture2D>("shootEsquerda");
            mTiroPersonagemDireita = Content.Load<Texture2D>("shootDireita");
            PosTiroPersonagem = new List<Rectangle>();
            PosTiroPersonagemBaixo = new List<Rectangle>();
            PosTiroPersonagemEsquerda = new List<Rectangle>();
            PosTiroPersonagemDireita = new List<Rectangle>();
            
        }

        public void Update(GameTime gameTime)
        {
            
                for (int g = 0; g < PosTiroPersonagem.Count; g++)
                    PosTiroPersonagem[g] = new Rectangle((int)PosTiroPersonagem.ElementAt(g).X, (int)PosTiroPersonagem.ElementAt(g).Y - 1,
                    (int)PosTiroPersonagem.ElementAt(g).Width, (int)PosTiroPersonagem.ElementAt(g).Height);

            
                for (int g = 0; g < PosTiroPersonagemBaixo.Count; g++)
                    PosTiroPersonagemBaixo[g] = new Rectangle((int)PosTiroPersonagemBaixo.ElementAt(g).X, (int)PosTiroPersonagemBaixo.ElementAt(g).Y + 1,
                    (int)PosTiroPersonagemBaixo.ElementAt(g).Width, (int)PosTiroPersonagemBaixo.ElementAt(g).Height);

                for (int g = 0; g < PosTiroPersonagemEsquerda.Count; g++)
                    PosTiroPersonagemEsquerda[g] = new Rectangle((int)PosTiroPersonagemEsquerda.ElementAt(g).X - 1, (int)PosTiroPersonagemEsquerda.ElementAt(g).Y,
                    (int)PosTiroPersonagemEsquerda.ElementAt(g).Width, (int)PosTiroPersonagemEsquerda.ElementAt(g).Height);


                for (int g = 0; g < PosTiroPersonagemDireita.Count; g++)
                    PosTiroPersonagemDireita[g] = new Rectangle((int)PosTiroPersonagemDireita.ElementAt(g).X + 1, (int)PosTiroPersonagemDireita.ElementAt(g).Y,
                    (int)PosTiroPersonagemDireita.ElementAt(g).Width, (int)PosTiroPersonagemDireita.ElementAt(g).Height);
            
        }

        public void DisparoTiro(Vector2 PersonagemPosition, int Direction)
        {
            this.Direction = Direction;

            if (Direction == 0)
            {
                PosTiroPersonagem.Add(new Rectangle((int)PersonagemPosition.X,
                (int)PersonagemPosition.Y, mTiroPersonagemCima.Width, mTiroPersonagemCima.Height));
            }
            if (Direction == 1)
            {
                PosTiroPersonagemBaixo.Add(new Rectangle((int)PersonagemPosition.X,
                (int)PersonagemPosition.Y, mTiroPersonagemCima.Width, mTiroPersonagemCima.Height));

            }
            if (Direction == 2)
            {
                PosTiroPersonagemEsquerda.Add(new Rectangle((int)PersonagemPosition.X,
                (int)PersonagemPosition.Y, mTiroPersonagemCima.Width, mTiroPersonagemCima.Height));

            }
            if (Direction == 3)
            {
                PosTiroPersonagemDireita.Add(new Rectangle((int)PersonagemPosition.X,
                (int)PersonagemPosition.Y, mTiroPersonagemCima.Width, mTiroPersonagemCima.Height));

            }
            ArTiroPersonagem.Add(RetornaTextura());
        }

        public void Draw(SpriteBatch spriteBatch)
        {
            if (ArTiroPersonagem == null)
                return;

            for ( int i = 0; i < PosTiroPersonagem.Count; i++)
            {
                 spriteBatch.Draw(ArTiroPersonagem[i], PosTiroPersonagem[i], Color.White);
            }

            for (int i = 0; i < PosTiroPersonagemBaixo.Count; i++)
            {
                spriteBatch.Draw(ArTiroPersonagem[i], PosTiroPersonagemBaixo[i], Color.White);
                
            }
            for (int i = 0; i < PosTiroPersonagemDireita.Count; i++)
            {
                spriteBatch.Draw(ArTiroPersonagem[i], PosTiroPersonagemDireita[i], Color.White);

            }
            for (int i = 0; i < PosTiroPersonagemEsquerda.Count; i++)
            {
                spriteBatch.Draw(ArTiroPersonagem[i], PosTiroPersonagemEsquerda[i], Color.White);

            }
        }

    }
}
